package com.yxw.live_vod_backend_boot.service;

import com.yxw.live_vod_backend_boot.dto.ProductAddDTO;
import com.yxw.live_vod_backend_boot.dto.ProductDeleteDTO;
import com.yxw.live_vod_backend_boot.dto.ProductQueryDTO;
import com.yxw.live_vod_backend_boot.dto.ProductUpdateDTO;
import com.yxw.live_vod_backend_boot.vo.ProductSpecificationVO;
import com.yxw.live_vod_backend_boot.vo.ProductVO;
import com.yxw.yxnet_cd_center.common.dto.PageVO;

import java.util.List;

/**
 * 商品管理
 * @author xiexuxin
 * @date 2023-12-07
 */
public interface ProductService {

    /**
     * 添加商品
     * @param addDTO
     * @return
     */
    List<ProductVO> addProduct(ProductAddDTO addDTO);

    /**
     * 删除商品
     * @param dto
     */
    void deleteProduct(ProductDeleteDTO dto);

    /**
     * 修改商品
     * @param updateDTO
     */
    void updateProduct(ProductUpdateDTO updateDTO);

    /**
     * 获取商品列表
     * @param queryDTO
     * @return
     */
    PageVO<ProductVO> getProductList(ProductQueryDTO queryDTO);

    /**
     * 根据Id获取商品详情
     * @param productId
     * @return
     */
    ProductVO getProductById(String productId);

    /**
     * 根据商品ID获取相关的商品
     * @param productSeriesNum
     * @return
     */
    List<ProductVO> getProductByNum(String productSeriesNum);

    /**
     * 商品上架/下架
     * @param productId
     * @param productStatus
     */
    void isPutAwayById(String productId, Integer productStatus);

    /**
     * 将redis中的库存相关取出并保存到数据库
     * @param productId
     * @return
     */
    void getProductStock(String productId);

    /**
     * 根据商品ID获取对应商品规格列表信息
     * @param productId
     * @return
     */
    List<ProductSpecificationVO> getProductSpecificationById(String productId);

}
